
    //#line 24 "KeywordTemplateF.gi

import 'snooperKWLexerprs.dart';
import 'snooperKWLexersym.dart';
import 'snooperParsersym.dart';


    //#line 70 "KeywordTemplateF.gi

class snooperKWLexer extends snooperKWLexerprs
{
    late String inputChars;
    List<int> keywordKind  = List<int>.filled(68 + 1,0);

    List<int>  getKeywordKinds()  { return keywordKind; }

    int lexer(int curtok, int lasttok)  
    {
        var current_kind = snooperKWLexer.getKind(inputChars.codeUnitAt(curtok)),
            act=0;

        for (act = tAction(snooperKWLexerprs.START_STATE, current_kind);
             act > snooperKWLexerprs.NUM_RULES && act < snooperKWLexerprs.ACCEPT_ACTION;
             act = tAction(act, current_kind))
        {
            curtok++;
            current_kind = (curtok > lasttok
                                   ? snooperKWLexersym.Char_EOF
                                   : snooperKWLexer.getKind(inputChars.codeUnitAt(curtok)));
        }

        if (act > snooperKWLexerprs.ERROR_ACTION)
        {
            curtok++;
            act -= snooperKWLexerprs.ERROR_ACTION;
        }

        return keywordKind[ (act == snooperKWLexerprs.ERROR_ACTION  || curtok <= lasttok) ? 0 : act];
    }

    void setInputChars(String inputChars)  { this.inputChars = inputChars; }


    //#line 10 "KWLexerFoldedCaseMapF.gi

    //
    // Each upper case letter is mapped into its corresponding
    // lower case counterpart. For example, if an 'A' appears
    // in the input, it is mapped into snooperKWLexersym.Char_a just
    // like 'a'.
    //
    static  List<int> init_tokenKind() 
    {
        List<int> tokenKind =  List<int>.filled(128,0);
        tokenKind['\$'.codeUnitAt(0)] = snooperKWLexersym.Char_DollarSign;
        tokenKind['%'.codeUnitAt(0)] = snooperKWLexersym.Char_Percent;
        tokenKind['_'.codeUnitAt(0)] = snooperKWLexersym.Char__;

        tokenKind['0'.codeUnitAt(0)] = snooperKWLexersym.Char_0;
        tokenKind['1'.codeUnitAt(0)] = snooperKWLexersym.Char_1;
        tokenKind['2'.codeUnitAt(0)] = snooperKWLexersym.Char_2;
        tokenKind['3'.codeUnitAt(0)] = snooperKWLexersym.Char_3;
        tokenKind['4'.codeUnitAt(0)] = snooperKWLexersym.Char_4;
        tokenKind['5'.codeUnitAt(0)] = snooperKWLexersym.Char_5;
        tokenKind['6'.codeUnitAt(0)] = snooperKWLexersym.Char_6;
        tokenKind['7'.codeUnitAt(0)] = snooperKWLexersym.Char_7;
        tokenKind['8'.codeUnitAt(0)] = snooperKWLexersym.Char_8;
        tokenKind['9'.codeUnitAt(0)] = snooperKWLexersym.Char_9;



        tokenKind['a'.codeUnitAt(0)] = snooperKWLexersym.Char_a;
        tokenKind['b'.codeUnitAt(0)] = snooperKWLexersym.Char_b;
        tokenKind['c'.codeUnitAt(0)] = snooperKWLexersym.Char_c;
        tokenKind['d'.codeUnitAt(0)] = snooperKWLexersym.Char_d;
        tokenKind['e'.codeUnitAt(0)] = snooperKWLexersym.Char_e;
        tokenKind['f'.codeUnitAt(0)] = snooperKWLexersym.Char_f;
        tokenKind['g'.codeUnitAt(0)] = snooperKWLexersym.Char_g;
        tokenKind['h'.codeUnitAt(0)] = snooperKWLexersym.Char_h;
        tokenKind['i'.codeUnitAt(0)] = snooperKWLexersym.Char_i;
        tokenKind['j'.codeUnitAt(0)] = snooperKWLexersym.Char_j;
        tokenKind['k'.codeUnitAt(0)] = snooperKWLexersym.Char_k;
        tokenKind['l'.codeUnitAt(0)] = snooperKWLexersym.Char_l;
        tokenKind['m'.codeUnitAt(0)] = snooperKWLexersym.Char_m;
        tokenKind['n'.codeUnitAt(0)] = snooperKWLexersym.Char_n;
        tokenKind['o'.codeUnitAt(0)] = snooperKWLexersym.Char_o;
        tokenKind['p'.codeUnitAt(0)] = snooperKWLexersym.Char_p;
        tokenKind['q'.codeUnitAt(0)] = snooperKWLexersym.Char_q;
        tokenKind['r'.codeUnitAt(0)] = snooperKWLexersym.Char_r;
        tokenKind['s'.codeUnitAt(0)] = snooperKWLexersym.Char_s;
        tokenKind['t'.codeUnitAt(0)] = snooperKWLexersym.Char_t;
        tokenKind['u'.codeUnitAt(0)] = snooperKWLexersym.Char_u;
        tokenKind['v'.codeUnitAt(0)] = snooperKWLexersym.Char_v;
        tokenKind['w'.codeUnitAt(0)] = snooperKWLexersym.Char_w;
        tokenKind['x'.codeUnitAt(0)] = snooperKWLexersym.Char_x;
        tokenKind['y'.codeUnitAt(0)] = snooperKWLexersym.Char_y;
        tokenKind['z'.codeUnitAt(0)] = snooperKWLexersym.Char_z;

        tokenKind['A'.codeUnitAt(0)] = snooperKWLexersym.Char_a;
        tokenKind['B'.codeUnitAt(0)] = snooperKWLexersym.Char_b;
        tokenKind['C'.codeUnitAt(0)] = snooperKWLexersym.Char_c;
        tokenKind['D'.codeUnitAt(0)] = snooperKWLexersym.Char_d;
        tokenKind['E'.codeUnitAt(0)] = snooperKWLexersym.Char_e;
        tokenKind['F'.codeUnitAt(0)] = snooperKWLexersym.Char_f;
        tokenKind['G'.codeUnitAt(0)] = snooperKWLexersym.Char_g;
        tokenKind['H'.codeUnitAt(0)] = snooperKWLexersym.Char_h;
        tokenKind['I'.codeUnitAt(0)] = snooperKWLexersym.Char_i;
        tokenKind['J'.codeUnitAt(0)] = snooperKWLexersym.Char_j;
        tokenKind['K'.codeUnitAt(0)] = snooperKWLexersym.Char_k;
        tokenKind['L'.codeUnitAt(0)] = snooperKWLexersym.Char_l;
        tokenKind['M'.codeUnitAt(0)] = snooperKWLexersym.Char_m;
        tokenKind['N'.codeUnitAt(0)] = snooperKWLexersym.Char_n;
        tokenKind['O'.codeUnitAt(0)] = snooperKWLexersym.Char_o;
        tokenKind['P'.codeUnitAt(0)] = snooperKWLexersym.Char_p;
        tokenKind['Q'.codeUnitAt(0)] = snooperKWLexersym.Char_q;
        tokenKind['R'.codeUnitAt(0)] = snooperKWLexersym.Char_r;
        tokenKind['S'.codeUnitAt(0)] = snooperKWLexersym.Char_s;
        tokenKind['T'.codeUnitAt(0)] = snooperKWLexersym.Char_t;
        tokenKind['U'.codeUnitAt(0)] = snooperKWLexersym.Char_u;
        tokenKind['V'.codeUnitAt(0)] = snooperKWLexersym.Char_v;
        tokenKind['W'.codeUnitAt(0)] = snooperKWLexersym.Char_w;
        tokenKind['X'.codeUnitAt(0)] = snooperKWLexersym.Char_x;
        tokenKind['Y'.codeUnitAt(0)] = snooperKWLexersym.Char_y;
        tokenKind['Z'.codeUnitAt(0)] = snooperKWLexersym.Char_z;
        return tokenKind;
    }
    
    static  final List<int> tokenKind =  init_tokenKind(); 

    static  int getKind(int c )
    {
        return (c < 128 ? snooperKWLexer.tokenKind[c] : 0);
    }

    //#line 108 "KeywordTemplateF.gi


    snooperKWLexer(String inputChars, int identifierKind)
    {
        this.inputChars = inputChars;
        keywordKind[0] = identifierKind;
 
        //
        // Rule 1:  Keyword ::= e n d
        //

        keywordKind[1] = (snooperParsersym.TK_end);
       
     
        //
        // Rule 2:  Keyword ::= i f
        //

        keywordKind[2] = (snooperParsersym.TK_if);
       
     
        //
        // Rule 3:  Keyword ::= e l s e
        //
 
        keywordKind[3] = (snooperParsersym.TK_else);
        
    
        //
        // Rule 4:  Keyword ::= e n d i f
        //

        keywordKind[4] = (snooperParsersym.TK_endif);
        
    
        //
        // Rule 5:  Keyword ::= c a l l
        //

        keywordKind[5] = (snooperParsersym.TK_call);
    
    
        //
        // Rule 6:  Keyword ::= r e t u r n
        //

        keywordKind[6] = (snooperParsersym.TK_return);
        
    
        //
        // Rule 7:  Keyword ::= e x i t
        //

        keywordKind[7] = (snooperParsersym.TK_exit);
         
    
        //
        // Rule 8:  Keyword ::= n e x t
        //

        keywordKind[8] = (snooperParsersym.TK_next);
         
    
        //
        // Rule 9:  Keyword ::= g o t o
        //

        keywordKind[9] = (snooperParsersym.TK_goto);
    
    
        //
        // Rule 10:  Keyword ::= d o
        //

        keywordKind[10] = (snooperParsersym.TK_do);
    
    
        //
        // Rule 11:  Keyword ::= l o o p
        //

        keywordKind[11] = (snooperParsersym.TK_loop);
    
    
        //
        // Rule 12:  Keyword ::= f o r
        //

        keywordKind[12] = (snooperParsersym.TK_for);
    
        //
        // Rule 13:  Keyword ::= t o
        //

        keywordKind[13] = (snooperParsersym.TK_to);
    
    
        //
        // Rule 14:  Keyword ::= s t e p
        //

        keywordKind[14] = (snooperParsersym.TK_step);
    
    
        //
        // Rule 15:  Keyword ::= h f o r
        //

        keywordKind[15] = (snooperParsersym.TK_hfor);
    
    
        //
        // Rule 16:  Keyword ::= h n e x t
        //

        keywordKind[16] = (snooperParsersym.TK_hnext);
    
    
        //
        // Rule 17:  Keyword ::= l o a d _ s c r i p t
        //

        keywordKind[17] = (snooperParsersym.TK_load_script);
    
    
        //
        // Rule 18:  Keyword ::= l o a d p r o f i l e
        //

        keywordKind[18] = (snooperParsersym.TK_loadprofile);
    
    
        //
        // Rule 19:  Keyword ::= r u n _ s c r i p t
        //

        keywordKind[19] = (snooperParsersym.TK_run_script);
    
    
        //
        // Rule 20:  Keyword ::= t i m e r _ b e g i n
        //

        keywordKind[20] = (snooperParsersym.TK_timer_begin);
    
        //
        // Rule 21:  Keyword ::= t i m e r _ e n d
        //

        keywordKind[21] = (snooperParsersym.TK_timer_end);
    
        //
        // Rule 22:  Keyword ::= s l e e p
        //

        keywordKind[22] = (snooperParsersym.TK_sleep);
    
        //
        // Rule 23:  Keyword ::= p a u s e
        //

        keywordKind[23] = (snooperParsersym.TK_pause);
     
        //
        // Rule 24:  Keyword ::= s e t
        //

        keywordKind[24] = (snooperParsersym.TK_set);
       
     
        //
        // Rule 25:  Keyword ::= m e s s a g e
        //

        keywordKind[25] = (snooperParsersym.TK_message);
       
    
        //
        // Rule 26:  Keyword ::= _ _ f i l e _ _
        //

        keywordKind[26] = (snooperParsersym.TK___file__);
    
    
        //
        // Rule 27:  Keyword ::= _ _ l i n e _ _
        //

        keywordKind[27] = (snooperParsersym.TK___line__);
    
        //
        // Rule 28:  Keyword ::= a u t o _ r e s p o n s e
        //

        keywordKind[28] = (snooperParsersym.TK_auto_response);
    
        //
        // Rule 29:  Keyword ::= o n
        //

        keywordKind[29] = (snooperParsersym.TK_on);
    
        //
        // Rule 30:  Keyword ::= o f f
        //

        keywordKind[30] = (snooperParsersym.TK_off);
    
        //
        // Rule 31:  Keyword ::= r e s e t
        //

        keywordKind[31] = (snooperParsersym.TK_reset);
    
        //
        // Rule 32:  Keyword ::= r e s e t 2
        //

        keywordKind[32] = (snooperParsersym.TK_reset2);
    
        //
        // Rule 33:  Keyword ::= c l e a r _ f i f o
        //

        keywordKind[33] = (snooperParsersym.TK_clear_fifo);
    
        //
        // Rule 34:  Keyword ::= w r i t e _ f i f o
        //

        keywordKind[34] = (snooperParsersym.TK_write_fifo);
    
        //
        // Rule 35:  Keyword ::= u p l o a d
        //

        keywordKind[35] = (snooperParsersym.TK_upload);
    
        //
        // Rule 36:  Keyword ::= u p l o a d 2
        //

        keywordKind[36] = (snooperParsersym.TK_upload2);
    
        //
        // Rule 37:  Keyword ::= b e e p
        //

        keywordKind[37] = (snooperParsersym.TK_beep);
    
        //
        // Rule 38:  Keyword ::= c o l d
        //

        keywordKind[38] = (snooperParsersym.TK_cold);
    
        //
        // Rule 39:  Keyword ::= e j e c t
        //

        keywordKind[39] = (snooperParsersym.TK_eject);
    
        //
        // Rule 40:  Keyword ::= i n s e r t
        //

        keywordKind[40] = (snooperParsersym.TK_insert);
    
        //
        // Rule 41:  Keyword ::= i n s t a l l
        //

        keywordKind[41] = (snooperParsersym.TK_install);
    
        //
        // Rule 42:  Keyword ::= i n s t a l l _ 2
        //

        keywordKind[42] = (snooperParsersym.TK_install_2);
    
        //
        // Rule 43:  Keyword ::= j c o p 2 2 _ e x t _ a u t h
        //

        keywordKind[43] = (snooperParsersym.TK_jcop22_ext_auth);
    
        //
        // Rule 44:  Keyword ::= j c o p 2 2 _ e x t _ a u t h _ 2
        //

        keywordKind[44] = (snooperParsersym.TK_jcop22_ext_auth_2);
    
        //
        // Rule 45:  Keyword ::= j c o p 2 2 _ e x t _ a u t h _ k m c
        //

        keywordKind[45] = (snooperParsersym.TK_jcop22_ext_auth_kmc);
    
        //
        // Rule 46:  Keyword ::= j c o p 2 2 _ e x t _ a u t h _ k m c _ 2
        //

        keywordKind[46] = (snooperParsersym.TK_jcop22_ext_auth_kmc_2);
    
        //
        // Rule 47:  Keyword ::= s e l e c t
        //

        keywordKind[47] = (snooperParsersym.TK_select);
    
        //
        // Rule 48:  Keyword ::= s e l e c t _ 2
        //

        keywordKind[48] = (snooperParsersym.TK_select_2);
    
        //
        // Rule 49:  Keyword ::= d e l e t e
        //

        keywordKind[49] = (snooperParsersym.TK_delete);
    
        //
        // Rule 50:  Keyword ::= d e l e t e _ 2
        //

        keywordKind[50] = (snooperParsersym.TK_delete_2);
    
        //
        // Rule 51:  Keyword ::= a p d u 2
        //

        keywordKind[51] = (snooperParsersym.TK_apdu2);
    
        //
        // Rule 52:  Keyword ::= p r o m p t
        //

        keywordKind[52] = (snooperParsersym.TK_prompt);
    
        //
        // Rule 53:  Keyword ::= s h o w a p d u
        //

        keywordKind[53] = (snooperParsersym.TK_showapdu);
    
        //
        // Rule 54:  Keyword ::= s w
        //

        keywordKind[54] = (snooperParsersym.TK_sw);
    
        //
        // Rule 55:  Keyword ::= d e s _ 3 d e s _ m a c
        //

        keywordKind[55] = (snooperParsersym.TK_des_3des_mac);
    
        //
        // Rule 56:  Keyword ::= f u l l _ 3 d e s _ m a c
        //

        keywordKind[56] = (snooperParsersym.TK_full_3des_mac);
    
        //
        // Rule 57:  Keyword ::= m a c _ a u t o _ m a c
        //

        keywordKind[57] = (snooperParsersym.TK_mac_auto_mac);
    
        //
        // Rule 58:  Keyword ::= m a c _ a u t o _ m a c _ 2
        //

        keywordKind[58] = (snooperParsersym.TK_mac_auto_mac_2);
    
        //
        // Rule 59:  Keyword ::= s u p e r l o n g
        //

        keywordKind[59] = (snooperParsersym.TK_superlong);
    
        //
        // Rule 60:  Keyword ::= c o m p a r e
        //

        keywordKind[60] = (snooperParsersym.TK_compare);
    
        //
        // Rule 61:  Keyword ::= s o c k e t _ m e s s a g e
        //

        keywordKind[61] = (snooperParsersym.TK_socket_message);
    
        //
        // Rule 62:  Keyword ::= g e n e r a t e
        //

        keywordKind[62] = (snooperParsersym.TK_generate);
    
        //
        // Rule 63:  Keyword ::= s e n d t e x t
        //

        keywordKind[63] = (snooperParsersym.TK_sendtext);
    
        //
        // Rule 64:  Keyword ::= s p l i t
        //

        keywordKind[64] = (snooperParsersym.TK_split);
    
        //
        // Rule 65:  Keyword ::= p u s h
        //

        keywordKind[65] = (snooperParsersym.TK_push);
    
        //
        // Rule 66:  Keyword ::= l e t
        //

        keywordKind[66] = (snooperParsersym.TK_let);
    
        //
        // Rule 67:  Keyword ::= j c o p 2 2 _ e x t _ a u t h _ n o n b l o c k
        //

        keywordKind[67] = (snooperParsersym.TK_jcop22_ext_auth_nonblock);
    
        //
        // Rule 68:  Keyword ::= c l e a r
        //

        keywordKind[68] = (snooperParsersym.TK_clear);
    
    //#line 118 "KeywordTemplateF.gi

        for (var i = 0; i < keywordKind.length; i++)
        {
            if (keywordKind[i] == 0)
                keywordKind[i] = identifierKind;
        }
    }
}

